今天就來使用TIUP佈建TIDB看看吧,因為我環境會如同之前一樣使用GCP,所以今天也一樣會透過terraform和ansible把相關的設定一口氣完成。
首先透過terraform的方法讓gcp自動建出一台管理機器、一定數量的TIDB、3台PD、一定數量的TIKV,腳本大致上如下
provider "google" {
credentials = “service account key“
project = “project id”
region = "asia-east1"
}
module "create_gce1" {
source = "./gce-db"
instance_name = “ithome-tidb-01”
instance_zone = "asia-east1-b"
}
module "create_gce2” {
source = "./gce-pd"
instance_name = “ithome-pd-01”
instance_zone = "asia-east1-b"
}
以此類推寫好provider.tf檔案,以及各自元件所需要的的main.tf規格
這種分法原因在於每個元件所需要的規格較為不同,適當地調配空間和memory會能得到較佳的使用體驗,接著透過ansible做一些底層調整(為方便做事不管資安的做法)
1.關閉防火牆
2.關閉selinux
3.vi /etc/sysctl.conf
add
vm.swappiness = 0
fs.file-max = 1000000
net.core.somaxconn = 32768
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_syncookies = 0
vm.overcommit_memory = 1
vm.swappiness = 0
sysctl -p 生效
root soft nofile 1000000
root hard nofile 1000000
root soft stack 32768
root hard stack 32768
這邊建議是TIDB運行的帳號
5.配置/tidb-data空間(並調配nodelalloc,noatime)
6.配置底層設定
cat /sys/kernel/mm/transparent_hugepage/enabled[always] madvise never
這代表有開
cat /sys/block/sd[bc]/queue/scheduler
noop [deadline] cfq
noop [deadline] cfq
這代表有用deadline
cpupower frequency-info --policy
analyzing CPU 0:
current policy: frequency should be within 1.20 GHz and 3.10 GHz.
The governor "powersave" may decide which speed to use within this range.
這代表有用powersave
mkdir /etc/tuned/balanced-tidb-optimal/
vi /etc/tuned/balanced-tidb-optimal/tuned.conf
[main]
include=balanced
[cpu]
governor=performance
[vm]
transparent_hugepages=never
[disk]
devices_udev_regex=(ID_SERIAL=36d0946606d79f90025f3e09a0c1fc035)|(ID_SERIAL=36d0946606d79f90025f3e09a0c1f9e81)
elevator=noop
tuned-adm profile balanced-tidb-optimal
7.不是用gcp環境的話建議關閉swap,gcp幫我關了
以上作業,如果不熟悉ansible module其實也都可以用ansible shell module完成,或是極端一點寫sh丟到每一台上執行。
而管理主機不需要上述的作業,不過需要放置tiup的執行工具(https://tiup-mirrors.pingcap.com/tiup-Linux-amd64.tar.gz),以及設定類似yaml檔案的tidb配置文件如下。
global:
user: "root"
ssh_port: 22
deploy_dir: "/tidb-deploy"
data_dir: "/tidb-data"
arch: "amd64"
server_configs:
pd:
replication.enable-placement-rules: true
monitored:
node_exporter_port: 9100
blackbox_exporter_port: 9115
pd_servers:
- host: PD1_IP
- host: PD2_IP
- host: PD3_IP
tidb_servers:
- host: TIDB1_IP
- host: TIDB2_IP
- host: TIDB3_IP
tikv_servers:
- host: TIKV1_IP
- host: TIKV2_IP
- host: TIKV3_IP
monitoring_servers:
- host: manager_server_IP
grafana_servers:
- host: manager_server_IP
alertmanager_servers:
- host: manager_server_IP
如果有想用flash和cdc功能的話
tiflash_servers:
- host: TIFLash1_IP
data_dir: /tidb-data/tiflash-9000
deploy_dir: /tidb-deploy/tiflash-9000
- host: TIFlash2_IP
data_dir: /tidb-data/tiflash-9000
deploy_dir: /tidb-deploy/tiflash-9000
cdc_servers:
- host: TICDC1_IP
- host: TICDC2_IP
- host: TICDC3_IP
有發現嗎,這一份文件,是可以用template的功能搭配ansible for迴圈自動產出的唷。
完成基礎設定後,對管理主機下check的指令檢查環境狀態,因為會需要看狀況,我是用手動執行的tiup cluster check ./topology.yaml --user root
這一份檢查是基於官方文件所做的檢查,所以有一些沒有符合的,例如時間同步之類的設定,如果有取代方案的話是可以忽略不符合的。
在檢查完成並且修正一些檢查中發現需要修正的問題後就可以進行安裝了tiup cluster deploy ithome-tidb v5.1.0 ./topology.yaml --user root
集群安裝完成後
可以在管理機上用指令啟停主機
tiup cluster start ithome-tidb
tiup cluster stop ithome-tidb
也可以用
tiup cluster list
tiup cluster display ithome-tidb
去看一些叢集狀況
tidb也會藉由tiup去建出grafana圖表,可以從剛剛的配置文件中設定,依據我的配置文件,就會是管理主機上會多出grafana的port,如果想要的話也可以將datasources整到之前設計的grafana上去收攏唷。
除了grafana可以圖表化的觀看使用狀況以外,從PD介面也可以登入管理者介面查看一些SQL使用狀況(指令查詢多久、最常使用的語法)之類的。
因為TIDB支援mysql語法,所以使用上可以直接用mysql的指令去use database,select table,寫資料讀資料看看囉。